#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <stdlib.h>

#ifndef _MySTRING_H_
#define _MySTRING_H_

#define INITSTR(s)  MyStr s;InitString(&s);
#define INSERTSTR(s,str)    INITSTR(s);InsertString(&s,str);


typedef struct MyString
{
    char *string;
    int len;
    int size;
}MyStr;

typedef struct MyStringList
{
    MyStr *strlist;
    int len;
    int size;
}MyStrList;

void InitString(MyStr *s);
bool InsertString(MyStr *s,const char *str);
bool InsertByIndex(MyStr *s,const char *str, int index);
bool InsertChar(MyStr *s,char c,int index);
bool RemoveString(MyStr *s,const char *str);
bool IsContains(MyStr *s,const char *str);
bool IsEqual(MyStr *s,const char *str);

MyStr ToUpper(const char *str);
MyStr ToLower(const char *str);
void ClearString(MyStr *s);
bool IsEqualCaseInsensitive(MyStr *s,const char *str);


int StringToInt(MyStr *s);
double StringToDouble(MyStr *s);
MyStr CopyString(const MyStr *s);
MyStr GetString(const char *str);



void InitMyStrList(MyStrList *list);
bool InsertTail(MyStrList *list,const char *str);
//字符串切割
MyStrList Split(const char *src,const char *delim);

bool RemoveMyStrByIndex(MyStrList *list,int index);
bool RemoveMyString(MyStrList *list,const char *str);

void DisplayStringList(MyStrList *list);
void ClearMyStringList(MyStrList *list);

#endif